package com.ruoyi.pack.mapper;

import java.util.List;
import java.math.BigDecimal;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.pack.domain.PackLocationLog;

/**
 * 定位日志Mapper接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface PackLocationLogMapper 
{
    /**
     * 查询定位日志
     * 
     * @param logId 定位日志主键
     * @return 定位日志
     */
    public PackLocationLog selectPackLocationLogByLogId(Long logId);

    /**
     * 查询定位日志列表
     * 
     * @param packLocationLog 定位日志
     * @return 定位日志集合
     */
    public List<PackLocationLog> selectPackLocationLogList(PackLocationLog packLocationLog);

    /**
     * 新增定位日志
     * 
     * @param packLocationLog 定位日志
     * @return 结果
     */
    public int insertPackLocationLog(PackLocationLog packLocationLog);

    /**
     * 修改定位日志
     * 
     * @param packLocationLog 定位日志
     * @return 结果
     */
    public int updatePackLocationLog(PackLocationLog packLocationLog);

    /**
     * 删除定位日志
     * 
     * @param logId 定位日志主键
     * @return 结果
     */
    public int deletePackLocationLogByLogId(Long logId);

    /**
     * 批量删除定位日志
     * 
     * @param logIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePackLocationLogByLogIds(Long[] logIds);
    
    /**
     * 根据定位器ID查询最新的定位日志
     * 
     * @param locatorId 定位器ID
     * @return 定位日志
     */
    public PackLocationLog selectLatestLogByLocatorId(Long locatorId);
    
    /**
     * 根据器具ID查询最新的定位日志
     * 
     * @param containerId 器具ID
     * @return 定位日志
     */
    public PackLocationLog selectLatestLogByContainerId(Long containerId);
    
    /**
     * 根据条件查询定位日志列表（高级筛选）
     * 
     * @param locatorCode 定位器编码
     * @param containerCode 器具编码
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param minBatteryLevel 最小电池电量
     * @param maxBatteryLevel 最大电池电量
     * @param minTemperature 最小温度
     * @param maxTemperature 最大温度
     * @param shockLevel 震动等级
     * @param uploadAddress 上传地址
     * @return 定位日志集合
     */
    public List<PackLocationLog> selectPackLocationLogByCondition(
        @Param("locatorCode") String locatorCode,
        @Param("containerCode") String containerCode,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime,
        @Param("minBatteryLevel") Integer minBatteryLevel,
        @Param("maxBatteryLevel") Integer maxBatteryLevel,
        @Param("minTemperature") BigDecimal minTemperature,
        @Param("maxTemperature") BigDecimal maxTemperature,
        @Param("shockLevel") Integer shockLevel,
        @Param("uploadAddress") String uploadAddress
    );
} 